package com.kt.common.collections

/**
 * 迭代器  ： 都可以remove ，list之类的直接remove会报错
 *      普通迭代器： iterator
 *      双向迭代器： listIterator
 */

fun main() {
    //基础迭代器的使用
    /*val nums = listOf(1, 2, 3, 5, 8)
    val it = nums.iterator()
    while (it.hasNext()){
        val next = it.next()
        println(next)
    }*/
    //val numbers = listOf(1, 2, 3, 5, 8)
    //for循环的时候会隐式调用迭代器
    /*for (item in numbers) {
        println(item)
    }*/

    /*numbers.forEach {
        println(it)
    }*/

    /**list专属迭代器 ,增加 hasPrevious ，previousIndex ，previous;等方法 */
   /* val listIterator = numbers.listIterator()
    while (listIterator.hasNext()) listIterator.next()
    println("Iterating backwards:")
    while (listIterator.hasPrevious()) {
        print("Index: ${listIterator.previousIndex()}")
        println(", value: ${listIterator.previous()}")
    }*/
    /**删除迭代器  可变的迭代器*/
    val numbers = mutableListOf("one", "two", "three", "four")
    /*val mutableIterator = numbers.iterator()

    mutableIterator.next()
    mutableIterator.remove()
    println("After removal: $numbers")*/
    /**列表还可以插入和替换元素*/
    val mutableListIterator = numbers.listIterator()
    mutableListIterator.next()
    mutableListIterator.add("sss")
    mutableListIterator.next()
    mutableListIterator.set("uuu")
    println(numbers)
}
